package cn.com.bluemoon.bd.flink.utils;

import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.math.NumberUtils;


public class TimeUtils {

    /**
     * 将小时分钟转换成[1, 1440]区间中的值，代表一天中的分钟值（天分钟）
     * @param hourMinute 小时分钟，格式为HHmm
     * @return
     */
    public static int encodeDayMinute(String hourMinute) {
        if (StringUtils.isEmpty(hourMinute) || hourMinute.length() != 4) return -1;
        int hour = NumberUtils.toInt(hourMinute.substring(0, 2), -1);
        int minute = NumberUtils.toInt(hourMinute.substring(2, 4), -1);
        return encodeDayMinute(hour, minute);
    }

    /**
     * 将小时分钟转换成[1, 1440]区间中的值，代表一天中的分钟值（天分钟）
     * @param hour 小时
     * @param minute 分钟
     * @return
     */
    public static int encodeDayMinute(String hour, String minute) {
        return encodeDayMinute(NumberUtils.toInt(hour), NumberUtils.toInt(minute));
    }

    /**
     * 将小时分钟转换成[1, 1440]区间中的值，代表一天中的分钟值（天分钟）
     * @param hour 小时
     * @param minute 分钟
     * @return
     */
    public static int encodeDayMinute(int hour, int minute) {
        return hour * 60 + minute + 1;
    }

    /**
     * 将天分钟（[1, 1440]中的一个值）转换成HHmm格式的数据
     * @param value
     * @return
     */
    public static String decodeHourMinute(int value) {
        value = value - 1;
        int hour = value / 60;
        int minute = value % 60;
        StringBuilder strBuf = new StringBuilder();
        if (hour < 10) strBuf.append("0");
        strBuf.append(hour);
        if (minute < 10) strBuf.append("0");
        strBuf.append(minute);
        return strBuf.toString();
    }

}
